package com.micro.modual.service;

import com.micro.core.frame.service.BasicsService;
import com.micro.core.resp.RespJson;
import com.micro.core.resp.RespJsonData;
import com.micro.core.resp.RespJsonPageData;
import com.micro.modual.entity.SystemDept;
import com.micro.modual.model.bo.systemdept.SystemDeptBO;
import com.micro.modual.model.dto.systemdept.SystemDeptListDTO;
import com.micro.modual.model.tree.SystemDeptTreeDTO;

import java.util.List;
import java.util.Map;


/**
*  <h1>系统部门表 接口</h1>
 * @author LevelCoder
 * @version V1.0.0
 * @email LevelCoder@126.com
 * @date 2020-08-04 00:11:10
 */
public interface SystemDeptService extends BasicsService<SystemDept,Long>{
    /**
     * <h2>查找系统部门表 列表</h2>
     * @param params 列表查询请求对象
     * @return List<SystemDeptListDTO> {@link SystemDeptListDTO}s  系统部门表 列表返回对象
     */
    RespJsonData<List<SystemDeptTreeDTO>> findSystemDeptList(Map<String, Object> params);


    /**
     * <h2>新增系统部门表详情</h2>
     * @param systemDeptBO {@link SystemDeptBO} 系统部门表 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson addSystemDept(SystemDeptBO systemDeptBO);

    /**
     * <h2>修改系统部门表详情</h2>
     * @param systemDeptBO  {@link SystemDeptBO} 系统部门表 新增/修改 请求对象
     * @return {@link RespJson} 返回结果基础类
     */
    RespJson editSystemDept(SystemDeptBO systemDeptBO);

    /**
     * <h2>根据主键编号删除系统部门表信息</h2>
     * @param id  系统部门表 主键编号
     * @return  {@link RespJson} 返回结果基础类
     */
    RespJson deleteSystemDept(Long id);


    /**
     * <h2>查找部门树</h2>
     * @return
     */
    RespJsonData<List<SystemDeptTreeDTO>> findSystemDeptTree();
}
